#ifndef ROBOTPGM
#define ROBOTPGM
#include "robotCommon.h"

#ifdef __cplusplus 
extern "C"
{
#endif

GENESDK_API HRESULT LoadPGM(void *handle, const char * filename, int reLoad, int timeout=10000);
GENESDK_API HRESULT StartPGM(void *handle, HelperExecutionMode ExecutionMode, int timeout=10000);
GENESDK_API HRESULT CheckPgmState(void *handle, PGMState *pgmState, TaskState *taskState, char programName[NET_NAME_MAX + 1]);
GENESDK_API HRESULT StopPGM(void *handle);
GENESDK_API HRESULT GetpgmPPSubPosition(void *handle, int *row, int *col, int *module, char moduleName[NET_NAME_MAX + 1]);
GENESDK_API HRESULT GetpgmPPPosition(void *handle, int *row, int *col, int *module);
GENESDK_API HRESULT SetpgmPP2Main(void *handle);
GENESDK_API HRESULT SetNominLineExe(void *handle, const char *fileName, int row);
GENESDK_API HRESULT SetNominFunctionExe(void *handle, const char *fileName, int row, const char *funName);
GENESDK_API HRESULT AddPgmBreakPoint(void *handle, int row);
GENESDK_API HRESULT DelPgmBreakPoint(void *handle, int row);
GENESDK_API HRESULT DelAllPgmBreakPoint(void *handle);
GENESDK_API HRESULT GetAllPgmBreakPoint(void *handle, const char *programName, int ** buffer, int *num);

GENESDK_API HRESULT Get10DataList(void *handle, char reslist[10][DATANAME_LENGTH + 1], int *resnum, const char * dataType, int nIdex);

GENESDK_API HRESULT DeleteRobPGMData(void *handle, const char *type, const char *varName);

GENESDK_API HRESULT GetRobToolData(void *handle, ToolData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobWobjData(void *handle, WobjData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobLoadData(void *handle, LoadData *Result, DataPropert* dataProp, const char *varName);
GENESDK_API HRESULT GetRobZoneData(void *handle, ZoneData *Result, DataPropert* dataProp, const char *varName);
GENESDK_API HRESULT GetRobSpeedData(void *handle, SpeedData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobTargetData(void *handle, HelperRobTarget *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobJointData(void *handle, HelperRobJointTarget *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobNumData(void *handle, NumData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobStringData(void *handle, StringData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobSeamData(void *handle, SeamData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobWeldData(void *handle, WeldData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobWeaveData(void *handle, WeaveData *Result, DataPropert* dataProp, const char * varName);
GENESDK_API HRESULT GetRobMultiPassData(void *handle, MultipassData *Result, DataPropert *dataProp, const char *varName);
GENESDK_API HRESULT GetRobLsCutData(void *handle, LsCutDaTa *Result, DataPropert *dataProp, const char *varName);
GENESDK_API HRESULT GetRobMultiLayerData(void *handle, MultiLayerData *Result, DataPropert* dataProp, const char * varName);

GENESDK_API HRESULT SetRobToolData(void *handle, const char *varName, const ToolData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobWobjData(void *handle, const char *varName, const WobjData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobLoadData(void *handle, const char *varName, const LoadData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobZoneData(void *handle, const char *varName, const ZoneData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobSpeedData(void *handle, const char *varName, const SpeedData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobTargetData(void *handle, const char *varName, const HelperRobTarget *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobJointData(void *handle, const char *varName, const HelperRobJointTarget *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobNumData(void *handle, const char *varName, const NumData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobStringData(void *handle, const char *varName, const StringData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobSeamData(void *handle, const char *varName, const SeamData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobWeldData(void *handle, const char *varName, const WeldData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobWeaveData(void *handle, const char *varName, const WeaveData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobMultipassData(void *handle, const char *varName, const MultipassData *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobLsCutData(void *handle, const char *varName, const LsCutDaTa *data, const DataPropert dataProp = UNKNOWN_DATA);
GENESDK_API HRESULT SetRobMultiLayerData(void *handle, const char *varName, const MultiLayerData *data, const DataPropert dataProp = UNKNOWN_DATA);

#ifdef __cplusplus
}
#endif
#endif // !ROBOTPGM